From 7dd4f9da063cb2cd43426c785535534c9d958ce5 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Mon, 9 Dec 2013 14:13:23 +0100 Subject: [PATCH] defer the domain mapping in scrub_one_page() This avoids a resource leak and needless playing with the pagetables in the case that the page is broken. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Reviewed-by: Keir Fraser --- xen/common/page_alloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 8002bd2517..5f484a2ecc 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1652,11 +1652,13 @@ __initcall(pagealloc_keyhandler_init); void scrub_one_page(struct page_info *pg) { - void *p = __map_domain_page(pg); + void *p; if ( unlikely(pg->count_info & PGC_broken) ) return; + p = __map_domain_page(pg); + #ifndef NDEBUG /* Avoid callers relying on allocations returning zeroed pages. */ memset(p, 0xc2, PAGE_SIZE); -- 2.30.2